iT邦幫忙

2025 iThome 鐵人賽

DAY 29
1
AI & Data

動不動就要 ETL? 以Trino為例-淺談從資料倉儲到湖倉系列 第 29

Day 29 - 監控你的湖倉,Grafafa metrics 建立(一)

  • 分享至 

  • xImage
  •  

29

Trino Cluster 監控

說到 Trino Cluster 的維運,集群的健康度監控可是不能少,這編列幾個筆者有實作的 Grafana 監控指標:

  1. Trino Coordinators pod CPU 消耗情形
  • 此指標代表 Trino Coordinator Pod 在當下時刻消耗的 CPU 核心數。
sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster="xxx-db", namespace="xxx-center", pod=~"trino-xxx-coordinator.*"})

截圖 2025-09-07 下午9.37.19

  1. Trino Workers active counts
  • 此指標用來追蹤 Trino Worker 的實際可用節點數。
  • 若數值比預期的 replicas 少,表示有 worker 沒起來,可能導致查詢失敗或效能下降。
sum(kube_deployment_status_replicas_ready{namespace="sl-data-center", deployment=~"trino-worker"})

截圖 2025-09-07 下午9.46.43

  1. Trino cluster CPU Core Count
  • 此指標拿整個 Trino cluster 目前可用的 CPU cores 數量,與一天前、七天前的數值做比較。
  • 此為觀察週期性趨勢的用意,看整座 Trino 在資源使用上有沒有週期性的變動。
1. trino_memory_clustermemorymanager_totalavailableprocessors
2. trino_memory_clustermemorymanager_totalavailableprocessors offset 1d 
3. trino_memory_clustermemorymanager_totalavailableprocessors offset 7d

截圖 2025-09-07 下午10.06.27

  1. Cluster User Memory Reservation
  • 此指標代表整個 Trino cluster 目前查詢「預留」的 *User Memory 總量。
trino_memory_clustermemorymanager_clusterusermemoryreservation

在 Trino 裡記憶體分三類:

  1. User Memory → 查詢運算需要的記憶體(如 hash join、排序、聚合)
  2. System Memory → Trino 自身運行所需的記憶體(如 task 資料結構、metadata)
  3. Revocable Memory → 可回收的暫時記憶體

截圖 2025-09-07 下午10.13.26

  1. Cluster Total Memory Reservation
  • 此指標代表整個 Trino cluster 目前查詢「預留」的 Total Memory 總量,包含 User MemorySystem Memory 以及 Revocable Memory
trino_memory_clustermemorymanager_clustertotalmemoryreservation

截圖 2025-09-07 下午10.13.56

Trino Cluster 告警

設定完指標,當然要知道什麼時候需要起床關注一下我們的 Trino cluster,否則要是半夜有客戶睡不著想查資料可就糟了。

這邊就上節有提到的指標,來談談能夠設定哪些相應的告警,以便為運作業的進行:

  1. Trino Coordinators pod CPU
  • 對 Trino Coordinator 來說,CPU 使用量長時間過高,代表 coordinator 可能遭遇:
    • 處理 metadata 查詢過多
    • 分配任務壓力過大
    • 某些 Query 設計錯誤,導致 coordinator 變瓶頸
  • 故可設置類似下面告警:
    • CPU 過高告警
      • 可設置如「CPU > 2 cores,持續 5 分鐘」,需值班人員處理。
    • CPU 長時間閒置告警
      • 若想要節省成本,可設置如「CPU 長時間 < 0.1 core」→ 可能叢集閒置,可考慮縮容。
## CPU > 2 cores,持續 5 分鐘
expr: sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster="ec-eks-db", namespace="sl-data-center", pod=~"trino-elt-coordinator.*"}) > 2
for: 5m

CPU 3hr < 0.1 core
expr: sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster="ec-eks-db", namespace="sl-data-center", pod=~"trino-elt-coordinator.*"}) < 0.1
for: 3hr
  1. Trino Workers active counts
  • 這個指標很常搭配 kube_deployment_spec_replicas(期望的 replicas 數量)一起看,可以判斷是否有「未達期望副本數」的情況。
  • 故可設置類似下面告警:
    • Worker 掛掉:表示沒半個 Worker 存活
    • Worker 部分缺失:表示與期望的 replicas 數量比較有差異
## Worker 掛掉 
expr: sum(kube_deployment_status_replicas_ready{namespace="sl-data-center", deployment=~"trino-worker"}) < 1
for: 5m
labels:
  severity: critical
  
## Worker 部分缺失
expr: (
  sum(kube_deployment_spec_replicas{namespace="sl-data-center", deployment=~"trino-worker"})
  -
  sum(kube_deployment_status_replicas_ready{namespace="sl-data-center", deployment=~"trino-worker"})
) > 0
for: 10m
  1. Cluster User Memory Reservation
  • 如果 User Memory 長時間逼近 Worker 記憶體上限,會導致:
    • 新的查詢無法進來被處理。
    • 已執行的查詢發生 OOM 或直接被 kill。
  • 故可設置類似下面告警:
    • 高記憶體使用:如 User Memory 超過 Worker 記憶體 7 成,維持 10 分鐘。
    • 記憶體接近上限:如 User Memory 超過 Worker 記憶體 9 成,維持 5 分鐘。
## 高記憶體使用
expr: trino_memory_clustermemorymanager_clusterusermemoryreservation > (0.7 * trino_memory_clustermemorymanager_clusterusermemorylimit)
for: 10m

## 記憶體接近上限
expr: trino_memory_clustermemorymanager_clusterusermemoryreservation > (0.9 * trino_memory_clustermemorymanager_clusterusermemorylimit)
for: 5m

明日預告

明天就是最後一天啦!完賽在即,心中感慨萬千。第一次參加 iThome 鐵人賽,有種「登泰山而小天下」的小小成就感。也希望持續學習與分享,能真正融入我的生活習慣。

今天介紹了 Trino Cluster 的監控與告警,明天《監控你的湖倉,Grafana Metrics 建立 (二)》將會補上 Iceberg 的部分。

Know me more

My Linkedin: https://www.linkedin.com/in/benny0624/
My Medium: https://hndsmhsu.medium.com/


上一篇
Day 28 - Trino + Iceberg ELT實作(四)
系列文
動不動就要 ETL? 以Trino為例-淺談從資料倉儲到湖倉29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言